home *** CD-ROM | disk | FTP | other *** search
-
-
-
- ddddmmmmaaaa____mmmmaaaappppaaaalllllllloooocccc((((DDDD3333XXXX)))) ddddmmmmaaaa____mmmmaaaappppaaaalllllllloooocccc((((DDDD3333XXXX))))
-
-
-
- NNNNAAAAMMMMEEEE
- _dddd_mmmm_aaaa______mmmm_aaaa_pppp_aaaa_llll_llll_oooo_cccc - allocate a DMA map
-
- SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
- _####_iiii_nnnn_cccc_llll_uuuu_dddd_eeee _""""_ssss_yyyy_ssss_////_tttt_yyyy_pppp_eeee_ssss_...._hhhh_""""
- _####_iiii_nnnn_cccc_llll_uuuu_dddd_eeee _""""_ssss_yyyy_ssss_////_ssss_eeee_mmmm_aaaa_...._hhhh_""""
- _####_iiii_nnnn_cccc_llll_uuuu_dddd_eeee _""""_ssss_yyyy_ssss_////_dddd_mmmm_aaaa_mmmm_aaaa_pppp_...._hhhh_""""
-
- _dddd_mmmm_aaaa_mmmm_aaaa_pppp______tttt _****_dddd_mmmm_aaaa______mmmm_aaaa_pppp_aaaa_llll_llll_oooo_cccc_((((_iiii_nnnn_tttt _t_y_p_e_,,,,_iiii_nnnn_tttt _a_d_a_p_t_e_r_,,,, _iiii_nnnn_tttt _n_u_m__p_a_g_e_s_,,,,_iiii_nnnn_tttt _f_l_a_g_s_))))_;;;;
-
- AAAArrrrgggguuuummmmeeeennnnttttssss
- _t_y_p_e Must be either _D_M_A__A_3_2_V_M_E or _D_M_A__A_2_4_V_M_E depending on the transfer
- desired. (The _D_M_A__S_C_S_I type is reserved for exclusive use by the
- SCSI host adapter driver.)
-
- _a_d_a_p_t_e_r
- Specifies the I/O adapter to use for setting up the mapping This
- should be set to the I/O bus adapter number to which the device
- doing DMA is attached to.
-
- _n_u_m__p_a_g_e_s
- Specifies the maximum number of mapping registers to allocate.
- Mapping registers are responsible for translating the addresses that
- appear on the I/O bus to a format that could be used internally
- within a system. On current Silicon Graphics systems, each mapping
- register is capable of mapping a page of length 4096 bytes on the
- I/O bus to a set of consecutive addresses on system memory. This is
- true regardless of the system page size. The number of bytes each
- mapping register is capable of mapping could change in future
- systems. In order to keep the device driver platform independent,
- use of the macro _iiii_oooo______bbbb_tttt_oooo_cccc is recommended to calculate the _n_u_m__p_a_g_e_s
- parameter for required length of mapping. You need to allocate an
- extra page for non-page aligned transfers-for example, a transfer of
- 4096 bytes starting at a non-aligned address actually requires two
- mapping registers.
-
- _f_l_a_g_s
- Reserved for future development. For now, you should always set it
- to 0.
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- _dddd_mmmm_aaaa______mmmm_aaaa_pppp_aaaa_llll_llll_oooo_cccc allocates DMA mapping registers on multiprocessor models and
- returns a pointer to a structure, of type _d_m_a_m_a_p__t, for later use by the
- mapping routine _dddd_mmmm_aaaa______mmmm_aaaa_pppp. You need DMA maps to access main memory through
- VME A24 space. In addition, because DMA maps give you the ability to
- perform transfers to non-contiguous physical memory, you also want them
- for A32 access.
-
- Use _dddd_mmmm_aaaa______mmmm_aaaa_pppp_ffff_rrrr_eeee_eeee to free the DMA mapping registers and other resources
- associated with a given map.
-
-
-
-
-
- PPPPaaaaggggeeee 1111
-
-
-
-
-
-
- ddddmmmmaaaa____mmmmaaaappppaaaalllllllloooocccc((((DDDD3333XXXX)))) ddddmmmmaaaa____mmmmaaaappppaaaalllllllloooocccc((((DDDD3333XXXX))))
-
-
-
- VME adapter number to which a device is attached is available at edtinit
- time via _e__a_d_a_p field in _e_d_t structure. It is also possible to get this
- number by using the function _vvvv_mmmm_eeee______aaaa_dddd_aaaa_pppp_tttt_eeee_rrrr(D3X).
-
- This call can block (it calls _pppp_ssss_eeee_mmmm_aaaa) if no maps are available, so it must
- never be called at interrupt time.
-
- On Challenge and Onyx systems, the maximum amount of address space that
- can be mapped for DMA by A32 VME devices is 64MB by default. This can be
- changed by modifying the systune variable _nnnn_vvvv_mmmm_eeee_3333_2222______dddd_mmmm_aaaa. The value of
- _nnnn_vvvv_mmmm_eeee_3333_2222______dddd_mmmm_aaaa is the maximum amount of address space (in megabytes) that may
- be allocated for A32 VME devices. The default value for _nnnn_vvvv_mmmm_eeee_3333_2222______dddd_mmmm_aaaa is 64
- (corresponding to the standard limit of 64MB of address space).
- _nnnn_vvvv_mmmm_eeee_3333_2222______dddd_mmmm_aaaa must be a power of 2 and may not exceed 512 (meaning 512MB).
- If a value larger than 512 is specified, it will be forced back down to
- 512. If the value is not a power of 2, it will be rounded up to the next
- higher power of 2 (but not to exceed 512).
-
- RRRReeeettttuuuurrrrnnnn VVVVaaaalllluuuueeeessss
- _dddd_mmmm_aaaa______mmmm_aaaa_pppp_aaaa_llll_llll_oooo_cccc returns a pointer to the DMA map structure on models that
- support DMA maps. On other models, _dddd_mmmm_aaaa______mmmm_aaaa_pppp_aaaa_llll_llll_oooo_cccc returns -1 to indicate
- that DMA mapping is not possible on that model.
-
- SSSSeeeeeeee AAAAllllssssoooo
- dma_map(D3X), dma_mapaddr(D3X), dma_mapfree(D3X), vme_adapter(D3X).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PPPPaaaaggggeeee 2222
-
-
-
-